<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flex</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            list-style: none;
        }

        ul {
            width: 600px;
            height: 800px;
            border: 1px red solid;
            /* 设置ui为弹性容器 */
            display: flex;
            flex-flow: wrap row;
            /* align-items:元素在辅轴上的对齐方式
                元素间的关系
                    可选值
                        stretch:默认值,将元素的长度设置为相同的(行内之间元素高度相同)
                        flex-start:元素不会拉伸,沿着辅轴起边对齐
                        flex-end:元素不会拉伸,沿着辅轴终边对齐
                        center:居中
                        baseline:基线对齐
            */
            /* align-items: center; */
            justify-content: center;
            /* align-content 辅轴空白空间分配
                flex-start:元素沿着辅轴起边排列
                    flex-end:元素沿着辅轴终边排列
                    center:元素居中排列
                    space-around:元素分布到两侧
                    space-between:元素分布到两侧边界
                    space-evenly元素分布到单侧
            */
            align-content: space-between;
        }

        li {
            width: 200px;
            background-color: #bfa;
            font-size: 50px;
            text-align: center;
            line-height: 100px;
            flex-shrink: 1;
            /* 元素的基本长度 */
            /* 如果主轴是横向的 则该值指定的就是元素的宽度
                如果主轴是纵向的 则该值指定的就是元素的高度
                默认值是auto 表示参考元素自身的高度或宽度
                若传递了一个具体的值,则以该值为准
            */
            /* flex-basis: 100px; */
            /* 简写 */
            /* flex:增长 缩减 基础 */
            /* 可选值 
                initial: flex:0 1 auto
                auto flex:1 1 auto 
                none flex:0 0 auto 弹性元素没有弹性
            */
            flex: 1 1 auto;
        }

        li:nth-child(1) {
            background-color: pink;
            /* align-self: 覆盖当前弹性元素上的align-items */
            /* align-self: flex-end; */
            /* order可以影响元素的排列顺序 */
            order: 3;
        }

        li:nth-child(2) {
            background-color: greenyellow;
            order: 2;
        }

        li:nth-child(3) {
            background-color: orangered;
            order: 1;
        }

        li:nth-child(4) {
            background-color: blueviolet;
        }

        li:nth-child(5) {
            background-color: cyan;
        }
    </style>
</head>

<body>
    <ul>
        <li>1</li>
        <li>2
            <div>2</div>
        </li>
        <li>3
            <div>3</div>
            <div>3</div>
        </li>
        <li>1</li>
        <li>2
            <div>2</div>
        </li>
    </ul>
</body>

</html>